package main

import "fmt"

/*
go语言对方法的调用限制，接口中未定义的方法（子类实现的独有方法）
，声明类型为接口的，无法调用
那么如何才能调用呢？
*/

type Phone interface {
	call()
}

type iPhone struct {
	name string
}

func (phone iPhone) call() {
	fmt.Println("Hello", "iPhone")
}

func (phone iPhone) sendWechat() {
	fmt.Println("Hello", "WeChat.")
}

func main() {

	var phone Phone
	phone = iPhone{
		name: "tang's phone",
	}
	phone.call()
	// !!当调用 phone.sendWechat时会说找不到，因为接口没定义该方法。
	//phone.sendWechat()

	// 不显示的声明为Phone接口，才能调用子类的特有方法。
	phone1 := iPhone{
		name: "tang's phone",
	}
	phone1.call()
	// !!!不显示的声明为Phone接口，才能调用子类的特有方法。
	phone1.sendWechat()
}
